home *** CD-ROM | disk | FTP | other *** search
Wrap
'************************************************************************** '* SimCity 2000 For Windows Setup file '* By Chris Weiss '* Last Edited July 18, 1994 '* Some portions (c) 1994 Microsoft Corp. '************************************************************************** '$DEFINE DEBUG ''Define for script development/debugging ' This should set a flag if the command line /NO_CHECK was included ' This must occur before calling setupapi, or any command line args get ' lost GLOBAL Dont_Check_For_Space COMMAND$=UCASE$(COMMAND$) IF INSTR(COMMAND$, "NO_CHECK") > 0 THEN Dont_Check_For_Space = 1 sz$=MID$(COMMAND$,1,(INSTR(COMMAND$,"NO_CHECK")-1)) COMMAND$=sz$ END IF ' End checking '$INCLUDE 'setupapi.inc' '$INCLUDE 'msdetect.inc' ''Dialog ID's CONST WELCOME = 100 CONST ASKQUIT = 200 CONST DESTPATH = 300 CONST EXITFAILURE = 400 CONST REGNAG = 500 CONST READMENAG = 501 CONST SIXTEENCOLS = 502 CONST EXITQUIT = 600 CONST EXITSUCCESS = 700 CONST APPHELP = 900 CONST MODEHELP = 904 CONST TOOBIG = 6300 CONST BADPATH = 6400 CONST PATHEXISTS = 6500 CONST CONFNAME = 7300 CONST GETUSER = 7500 CONST BADNAME = 7700 CONST BADVIDEO = 7701 CONST BADCOMPANY = 7702 CONST BADMODE = 7704 '' Some Constant Values for Maximized Install Window CONST WS_VISIBLE =&H10000000 CONST WS_BORDER =&H00800000 CONST WS_CLIPCHILDREN =&H02000000 CONST GWL_STYLE = -16 CONST SW_SHOWMAXIMIZED = 3 '' End Maximized Window Install Constants ''Misc program values CONST INSTALLED_SIZE = 7000000 ''Size of installed SC2k for free space check ''Bitmap ID CONST LOGO = 1 GLOBAL DEST$ ''Default destination directory. GLOBAL USERNAME$ ''User registration name. GLOBAL COMPANYNAME$ ''Company Name GLOBAL WINDIR$ GLOBAL WINSYSDIR$ GLOBAL WING1$ WINDIR$ = GetWindowsDir() WINSYSDIR$ = GetWindowsSysDir () DECLARE SUB Install DECLARE FUNCTION MakePath (szDir$, szFile$) AS STRING DECLARE FUNCTION VflatdPresent LIB "iniupd.DLL" AS INTEGER '' Some Subroutine Declarations for Maximized Install Window DECLARE FUNCTION ShowWindow LIB "user.exe" (hWnd%, iShow%) AS INTEGER DECLARE FUNCTION SetWindowLong LIB "user.exe" (hWnd%, offset%, style&) AS LONG '' End Declarations for Maximized Window Install INIT: '' This is where we set it to maximize the install window - If the user has NO_CHECK, we ignore this. IF Dont_Check_For_Space = 0 THEN hWnd%=HwndFrame() i1&=SetWindowLong(hWnd%,GWL_STYLE,WS_VISIBLE+WS_BORDER+WS_CLIPCHILDREN) j1%=ShowWindow(hWnd%,SW_SHOWMAXIMIZED) END IF '' End of Maximize stuff CUIDLL$ = "mscuistf.dll" ''Custom user interface dll HELPPROC$ = "FHelpDlgProc" ''Help dialog procedure SetBitmap CUIDLL$, LOGO SetTitle " SimCity 2000(R) for Windows Setup" szInf$ = GetSymbolValue("STF_SRCINFPATH") IF szInf$ = "" THEN szInf$ = GetSymbolValue("STF_CWDDIR") + "SETUP.INF" END IF ReadInfFile szInf$ ' DEST$ = "C:\SC2K4WIN" DEST$ = "C:\SC2KDEMO" ''æ╠î▒ö┼ '$IFDEF DEBUG i% = SetSizeCheckMode(scmOnIgnore) '' could use scmOff; def = scmOnFatal WinDrive$ = MID$(GetWindowsDir, 1, 1) IF IsDriveValid(WinDrive$) = 0 THEN i% = DoMsgBox("Windows drive ('"+WinDrive$+"') is not a valid drive.", "DEBUG", MB_TASKMODAL+MB_ICONHAND+MB_OK) GOTO QUIT END IF '$ENDIF ''DEBUG IF Dont_Check_For_Space = 1 THEN i% = DoMsgBox("NO_CHECK specified, forcing install to C:\SC2KWIN. I will not be held responsible for my actions!", "Verification Status", MB_TASKMODAL+MB_ICONHAND+MB_OK) USERNAME$="Installed with NO_CHECK" ' COMPANYNAME$="Please Edit SC2K4WIN.INI" COMPANYNAME$="Please Edit SC2KDEMO.INI" ''æ╠î▒ö┼ GOTO DOWING END IF WELCOME: sz$ = UIStartDlg(CUIDLL$, WELCOME, "FInfoDlgProc", APPHELP, HELPPROC$) IF sz$ = "CONTINUE" THEN UIPop 1 ELSE GOSUB ASKQUIT GOTO WELCOME END IF CHECKMODE: i% = GetWindowsMode () IF i% < 2 THEN sz$ = UIStartDLG(CUIDLL$, BADMODE, "FInfoDlgProc", MODEHELP, HELPPROC$) IF SZ$ = "CONTINUE" THEN UIPop 1 ELSE UIPop 1 GOSUB ASKQUIT GOTO CHECKMODE END IF END IF GETTHEUSER: ' sz$ = UIStartDlg(CUIDLL$, GETUSER, "FNameOrgDlgProc", APPHELP, HELPPROC$) ' USERNAME$ = GetSymbolValue("NameOut") ' COMPANYNAME$ = GetSymbolValue("OrgOut") '' æ╠î▒ö┼ sz$ = "CONTINUE" USERNAME$ = "╝╤╝├¿2000æ╠î▒ö┼" COMPANYNAME$ = "âCâ}âWâjâAèöÄ«ë∩Ä╨" IF sz$ = "CONTINUE" THEN IF LEN(USERNAME$) < 1 OR LEN(USERNAME$) > 22 OR MID$(USERNAME$,1,1) = " " THEN GOSUB BADNAME GOTO GETTHEUSER END IF IF LEN(COMPANYNAME$) > 22 OR MID$(COMPANYNAME$,1,1) = " " THEN GOSUB BADCOMPANY GOTO GETTHEUSER END IF UIPop 1 ELSEIF sz$ = "REACTIVATE" THEN GOTO GETTHEUSER ELSEIF sz$ = "BACK" THEN UIPop 1 GOTO WELCOME ELSE GOSUB ASKQUIT GOTO GETTHEUSER END IF GETPATH: SetSymbolValue "EditTextIn", DEST$ SetSymbolValue "EditFocus", "END" GETPATHL1: sz$ = UIStartDlg(CUIDLL$, DESTPATH, "FEditDlgProc", APPHELP, HELPPROC$) DEST$ = GetSymbolValue("EditTextOut") IF sz$ = "CONTINUE" THEN IF MID$(DEST$, LEN(DEST$), 1) = "\" THEN DEST$ = MID$(DEST$,1,LEN(DEST$) - 1) END IF '' This is the portion that says what I said IF Dont_Check_For_Space = 0 THEN ' Is it a writeable directory? IF IsDirWritable(DEST$) = 0 THEN GOSUB BADPATH GOTO GETPATHL1 END IF ''temp$ = "Free Space is " + str$(GetFreeSpaceForDrive(MID$(DEST$,1,1))) ''i% = DoMsgBox(temp$, "Setup Message", MB_OK+MB_TASKMODAL+MB_ICONHAND) ' Check free space IF GetFreeSpaceForDrive(MID$(DEST$,1,1)) < INSTALLED_SIZE THEN GOSUB TOOBIG GOTO GETPATHL1 END IF ' Does it exist? IF DoesFileExist(DEST$ + "\SC2000W.EXE", FemExists) = 1 THEN SetSymbolValue "ConfirmTextIn", DEST$ sz$ = UIStartDlg(CUIDLL$, PATHEXISTS, "FConfirmDlgProc", 0, "") IF sz$ = "EXIT" THEN UIPopAll ERROR STFQUIT ELSEIF sz$ = "BACK" THEN UIPop 1 GOTO GETTHEUSER ELSEIF sz$ = "REACTIVATE" THEN GOTO CONFIRMALL ELSE UIPop 1 END IF END IF END IF UIPop 1 ELSEIF sz$ = "REACTIVATE" THEN GOTO GETPATHL1 ELSEIF sz$ = "BACK" THEN UIPop 1 GOTO GETTHEUSER ELSE GOSUB ASKQUIT GOTO GETPATH END IF CONFIRMALL: SetSymbolValue "ConfirmTextIn", USERNAME$ AddListItem "ConfirmTextIn", COMPANYNAME$ AddListItem "ConfirmTextIn", DEST$ sz$ = UIStartDlg(CUIDLL$, CONFNAME, "FConfirmDlgProc", 0, "") IF sz$ = "EXIT" THEN UIPopAll ERROR STFQUIT ELSEIF sz$ = "BACK" THEN UIPop 1 GOTO GETTHEUSER ELSEIF sz$ = "REACTIVATE" THEN GOTO CONFIRMALL ELSE UIPop 1 END IF DOWING: ' This portion installs the DVA.386 driver on machines in Enhanced Mode IF VflatdPresent() = 0 THEN CreateSysIniKeyValue GetWindowsDir + "system.ini", "386Enh", "device", GetWindowsSysDir+"dva.386", cmoOverwrite bInstallDVA% = 1 END IF WING1$ = "WinG" RemoveIniSection "WIN.INI", wing1$, CmoNone Install QUIT: ON ERROR GOTO ERRQUIT IF ERR = 0 THEN dlg% = EXITSUCCESS ELSEIF ERR = STFQUIT THEN dlg% = EXITQUIT ELSE dlg% = EXITFAILURE END IF QUITL1: sz$ = UIStartDlg(CUIDLL$, dlg%, "FInfo0DlgProc", 0, "") IF sz$ = "REACTIVATE" THEN GOTO QUITL1 END IF UIPop 1 END ERRQUIT: i% = DoMsgBox("Setup sources were corrupted! Please call Maxis Technical Support.", "Setup Message", MB_OK+MB_TASKMODAL+MB_ICONHAND) END BADPATH: sz$ = UIStartDlg(CUIDLL$, BADPATH, "FInfo0DlgProc", 0, "") IF sz$ = "REACTIVATE" THEN GOTO BADPATH END IF UIPop 1 RETURN BADNAME: sz$ = UIStartDlg(CUIDLL$, BADNAME, "FInfo0DlgProc", 0, "") IF sz$ = "REACTIVATE" THEN GOTO BADNAME END IF UIPop 1 RETURN BADCOMPANY: sz$ = UIStartDlg(CUIDLL$, BADCOMPANY, "FInfo0DlgProc", 0, "") IF sz$ = "REACTIVATE" THEN GOTO BADCOMPANY END IF UIPop 1 RETURN TOOBIG: sz$ = UIStartDlg(CUIDLL$, TOOBIG, "FInfo0DlgProc", 0, "") IF sz$ = "REACTIVATE" THEN GOTO TOOBIG END IF UIPop 1 RETURN ASKQUIT: sz$ = UIStartDlg(CUIDLL$, ASKQUIT, "FQuitDlgProc", 0, "") IF sz$ = "EXIT" THEN UIPopAll ERROR STFQUIT ELSEIF sz$ = "REACTIVATE" THEN GOTO ASKQUIT ELSE UIPop 1 END IF RETURN '** '** Purpose: '** Builds the copy list and performs all installation operations. '** Arguments: '** none. '** Returns: '** none. '************************************************************************* SUB Install STATIC SrcDir$ = GetSymbolValue("STF_SRCDIR") CreateDir DEST$, cmoNone CreateDir DEST$ + "\SCENARIO", cmoNone CreateDir DEST$ + "\SOUNDS", cmoNone CreateDir DEST$ + "\BITMAPS", cmoNone CreateDir DEST$ + "\DATA", cmoNone ' CreateDir DEST$ + "\DRIVERS", cmoNone OpenLogFile MakePath(DEST$, "SETUP.LOG"), 0 WriteToLogFile "" WriteToLogFile " User chose as destination directory: '" + DEST$ + "'" WriteToLogFile "" WriteToLogFile "May have had to create the directory: " + DEST$ WriteToLogFile "May have had to create the directory: " + DEST$ + "\SCENARIO" WriteToLogFile "May have had to create the directory: " + DEST$ + "\SOUNDS" WriteToLogFile "May have had to create the directory: " + DEST$ + "\BITMAPS" WriteToLogFile "May have had to create the directory: " + DEST$ + "\DATA" ' Add this if we're gonna install SVGA drivers ' WriteToLogFile "May have had to create the directory: " + DEST$ + "\DRIVERS" WriteToLogFile "" ClearCopyList ClearBillboardList ' AddToBillboardList "mscuistf.dll", READMENAG, "FModelessDlgProc", 1 ' AddToBillboardList "mscuistf.dll", REGNAG, "FModelessDlgProc", 1 ' AddToBillboardList "mscuistf.dll", SIXTEENCOLS, "FModelessDlgProc", 1 AddSectionFilesToCopyList "BITMAPS", SrcDir$, DEST$ + "\BITMAPS" AddSectionFilesToCopyList "Files", SrcDir$, DEST$ AddSectionFilesToCopyList "SCENARIO", SrcDir$, DEST$ + "\SCENARIO" AddSectionFilesToCopyList "SOUNDS", SrcDir$, DEST$ + "\SOUNDS" AddSectionFilesToCopyList "DATA", SrcDir$, DEST$ + "\DATA" AddSectionFilesToCopyList "WING", SrcDir$, WINSYSDIR$ 'Add this if we're gonna install SVGA drivers ' AddSectionFilesToCopyList "DRIVERS", SrcDir$, DEST$ + "\DRIVERS" CopyFilesInCopyList '' Took these out because it just doesnt work and we wanted to finish '' CreateIniKeyValue "WIN.INI", "Extensions", "SC2", DEST$ + "\SC2000W.EXE ^.SC2", cmoOverwrite '' CreateIniKeyValue "WIN.INI", "Extensions", "SCN", DEST$ + "\SC2000W.EXE ^.SCN", cmoOverwrite ' ini$ = MakePath(WINDIR$, "SC2K4WIN.INI") ini$ = MakePath(WINDIR$, "SC2KDEMO.INI") ''æ╠î▒ö┼ CreateIniKeyValue ini$, "REGISTRATION", "Mayor Name", USERNAME$, cmoOverwrite CreateIniKeyValue ini$, "REGISTRATION", "Company Name", COMPANYNAME$, cmoOverwrite CreateIniKeyValue ini$, "PATHS", "Home", DEST$, cmoOverwrite CreateIniKeyValue ini$, "PATHS", "Scenarios", DEST$ + "\SCENARIO", cmoOverwrite CreateIniKeyValue ini$, "PATHS", "Graphics", DEST$ + "\BITMAPS", cmoOverwrite CreateIniKeyValue ini$, "PATHS", "Music", DEST$ + "\SOUNDS", cmoOverwrite CreateIniKeyValue ini$, "PATHS", "Cities", DEST$, cmoOverwrite CreateIniKeyValue ini$, "PATHS", "Tilesets", DEST$ + "\DATA", cmoOverwrite CreateIniKeyValue ini$, "LOCALIZE", "Language", "USA", cmoOverwrite CreateIniKeyValue ini$, "WINDOWS", "Edit Window Position", "0 0 0 0", cmoOverwrite CreateIniKeyValue ini$, "WINDOWS", "Toolbar Position", "0 0", cmoOverwrite CreateIniKeyValue ini$, "OPTIONS", "Speed", "Normal", cmoOverwrite CreateIniKeyValue ini$, "OPTIONS", "Sound", "On", cmoOverwrite CreateIniKeyValue ini$, "OPTIONS", "Music", "On", cmoOverwrite CreateIniKeyValue ini$, "OPTIONS", "AutoGoto", "On", cmoOverwrite CreateIniKeyValue ini$, "OPTIONS", "Auto Budget", "Off", cmoOverwrite CreateIniKeyValue ini$, "OPTIONS", "No Disasters", "Off", cmoOverwrite ' CreateProgmanGroup "Maxis", "", cmoNone ' ShowProgmanGroup "Maxis", 1, cmoNone ' CreateProgmanItem "Maxis", "SimCity 2000 for Windows", DEST$ + "\SC2000W.EXE", "", cmoOverwrite ' CreateProgmanItem "Maxis", "SimCity 2000 ReadMe", DEST$ + "\README.WRI", "", cmoOverwrite ' CreateProgmanItem "Maxis", "SimCity 2000 Help", DEST$ + "\SC2USA.HLP", "", cmoOverwrite '' æ╠î▒ö┼ CreateProgmanGroup "SC2KDemo", "", cmoNone ShowProgmanGroup "SC2KDemo", 1, cmoNone CreateProgmanItem "SC2KDemo", "SC2000 for │▓▌─▐│╜▐æ╠î▒ö┼", DEST$ + "\SC2000W.EXE", "", cmoOverwrite CreateProgmanItem "SC2KDemo", "SC2000 ReadMe", DEST$ + "\README.WRI", "", cmoOverwrite CreateProgmanItem "SC2KDemo", "SC2000 Help", DEST$ + "\SC2USA.HLP", "", cmoOverwrite CloseLogFile END SUB '** '** Purpose: '** Appends a file name to the end of a directory path, '** inserting a backslash character as needed. '** Arguments: '** szDir$ - full directory path (with optional ending "\") '** szFile$ - filename to append to directory '** Returns: '** Resulting fully qualified path name. '************************************************************************* FUNCTION MakePath (szDir$, szFile$) STATIC AS STRING IF szDir$ = "" THEN MakePath = szFile$ ELSEIF szFile$ = "" THEN MakePath = szDir$ ELSEIF MID$(szDir$, LEN(szDir$), 1) = "\" THEN MakePath = szDir$ + szFile$ ELSE MakePath = szDir$ + "\" + szFile$ END IF END FUNCTION